prepare($count_sql);
$count_stmt->execute($params);
$total_result = $count_stmt->fetch(PDO::FETCH_ASSOC);
$total_records = $total_result['total'];
$total_pages = ceil($total_records / $per_page);
// Get students with pagination
$offset = ($page - 1) * $per_page;
$sql = "SELECT * FROM students_info" . $where_clause . " ORDER BY sn DESC LIMIT :offset, :per_page";
$stmt = $DBcon->prepare($sql);
foreach ($params as $key => $value) {
$stmt->bindValue($key, $value);
}
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':per_page', $per_page, PDO::PARAM_INT);
$stmt->execute();
$students = $stmt->fetchAll(PDO::FETCH_ASSOC);
return [
'students' => $students,
'total_records' => $total_records,
'total_pages' => $total_pages,
'current_page' => $page
];
} catch (PDOException $e) {
error_log("Get students error: " . $e->getMessage());
return ['students' => [], 'total_records' => 0, 'total_pages' => 0, 'current_page' => 1];
}
}
// Get classes for dropdown
function getClasses() {
global $DBcon;
try {
$sql = "SELECT classid FROM class ORDER BY classid";
$stmt = $DBcon->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
error_log("Get classes error: " . $e->getMessage());
return [];
}
}
// Get academic years for dropdown
function getAcademicYears() {
global $DBcon;
try {
$sql = "SELECT academic_year FROM calender ORDER BY academic_year DESC";
$stmt = $DBcon->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
error_log("Get academic years error: " . $e->getMessage());
return [];
}
}
// Handle delete action
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'delete') {
if (!validate_csrf_token($_POST['csrf_token'])) {
$message = 'Security token validation failed.';
$message_type = 'error';
} else {
$id = intval($_POST['id']);
try {
$sql = "DELETE FROM students_info WHERE sn = :id";
$stmt = $DBcon->prepare($sql);
if ($stmt->execute([':id' => $id])) {
$message = 'Student deleted successfully.';
$message_type = 'success';
} else {
$message = 'Failed to delete student.';
$message_type = 'error';
}
} catch (PDOException $e) {
error_log("Delete student error: " . $e->getMessage());
$message = 'Database error occurred.';
$message_type = 'error';
}
}
}
// Get filter parameters
$filter_class = isset($_GET['filter_class']) ? sanitize_input($_GET['filter_class']) : '';
$filter_year = isset($_GET['filter_year']) ? sanitize_input($_GET['filter_year']) : '';
$current_page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
// Build filters array
$filters = [];
if (!empty($filter_class)) $filters['class_id'] = $filter_class;
if (!empty($filter_year)) $filters['admin_year'] = $filter_year;
// Get students data
$students_data = getStudents($filters, $current_page, 25);
$students = $students_data['students'];
$total_records = $students_data['total_records'];
$total_pages = $students_data['total_pages'];
// Get dropdown data
$classes = getClasses();
$academic_years = getAcademicYears();
$csrf_token = generate_csrf_token();
?>
Student Management - School Admin